Titre

------------------------------------- Chapitre VIII - Cryptographie -------------------------------------

Cryptographie symétrique : un exemple de Blowfish - 4/4

 

Keygenning :

La 1ère partie du serial est quelconque, la deuxième partie de serial doit être non nulle mais inférieure à 1869Fh.
La 1ère partie du serial (1er DWORD) étant aléatoire, on peut se demander s'il n'est pas vérifié par la suite (hidden check).
En mettant un hardware breakpoint on read, on s'aperçoit qu'il est finalement écrasé dans la pile...
Il faut donc générer un nombre aléatoire de 8 chiffres, suivi d'un deuxième nombre aléatoire de 8 chiffres, non nul mais inférieur à 1869Fh.
Ensuite, il suffit de chiffrer à l'aide de la fonction Blowfish_encrypt ( ) et de la clef privée, ce nombre de 16 chiffres, qui est dans un format hexadécimal.

Voilà, il nous reste plus qu'à coder :).

Coding :

On va réaliser la programmation du keygen en C.

J'utilise l'IDE Codeblocks et GCC Compiler.
Pour retoucher les ressources (fichiers .rc), j'utilise Resedit.
Dans les templates, j'utilise des images BITMAP (avec l'option RLE Compressed via HyperSnap-DX 4), afin de gagner de la place...

Pour l'implémentation du Blowfish, j'ai repris ces sources : http://www.schneier.com/code/bfsh-koc.zip

D'autres sources sont disponibles sur : http://www.schneier.com/blowfish-download.html.

Le calcul du Blowfish se fait dans main.cpp à ce niveau là :

Serial39

Les sources sont fournies (elles sont loin d'être super propres :P).

Conclusion :

Blowfish reste un algorithme accessible.
Dans la majorité des cas (ce n'est pas le cas ici Description : :P), les schémas d'enregistrement utilisent la fonction Blowfish_Init ( ) et Blowfish_encrypt ( ), ce qui facilite le travail du reverser.
Il a juste à implémenter une fonction de déchiffrement et a besoin de connaître la clef (habituellement sniffée en mémoire).
On en a un exemple avec Drive Power Manager v1.10.

Moins fréquemment, le programme inverse les fonctions, et donc le programme implémente l'initialisation et le déchiffrement, et le reverser aura besoin de celle du chiffrement.
Il faut donc faire attention aux fonctions que l'on a réellement.

Le pire cas que l'on peut trouver est un Blowfish modifié, en d'autres mots, les protections qui n'implémentent pas la forme canonique de Blowfish, mais une version qui change quelques-uns de ses aspects. Habituellement, les modifications que l'on rencontre ne sont pas nombreuses. Voici les plus courantes :

Si vous voulez tester Blowfish, vous pouvez vous entraîner également sur :
WebExpert v6.60
Drive Power Manager v1.10

Le keygenning de cette application reste finalement simple :).
Le schéma d'enregistrement est d'ailleurs le même pour tous les logiciels de cette boîte, à l'exception de Nidesoft DVD Copy v5.2, qui utilise un ancien schéma d'enregistrement (toujours avec Blowfish), mais il présenterait un bug...

Merci de ne pas utiliser ce tutoriel et les sources jointes, pour sortir un keygen en 0day ou ailleurs !

Quant aux logiciels, ils ont un intérêt limité.
Ça doit être encore un de ces auteurs qui pompent et adaptent des sources de logiciels libres pour se faire de l'argent ...

 

 

Precedent        Sommaire        Suivant